Loading the library

library(Seurat)

Setting the working directory

setwd("C:/Users/savill/OneDrive/Documents/PhD Jesse/R-Objects")

Loading the data

# load my data
Gastruloid_72h_merged_afterQC <- readRDS("./df72v3.rds")

Gastruloid_72h_merged_afterQC
An object of class Seurat 
36738 features across 1742 samples within 2 assays 
Active assay: RNA (20186 features, 2000 variable features)
 1 other assay present: SCT
 2 dimensional reductions calculated: pca, umap
DefaultAssay(Gastruloid_72h_merged_afterQC) <- "SCT"

Gastruloid_72h_merged_afterQC <- SetIdent(Gastruloid_72h_merged_afterQC, value = "predicted.id")

Getting the metadata and taking a peak:

metadata <- Gastruloid_72h_merged_afterQC@meta.data
head(metadata)

Get all the columns so we can delete the old morphology info:

colnames(metadata)
 [1] "orig.ident"           "nCount_RNA"           "nFeature_RNA"         "Sample.barcode"       "Morphotype"           "percent.mt"           "RNA_snn_res.0.3"      "seurat_clusters"     
 [9] "S.Score"              "G2M.Score"            "Phase"                "old.ident"            "nCount_SCT"           "nFeature_SCT"         "predicted.id"         "prediction.score.17" 
[17] "prediction.score.8"   "prediction.score.19"  "prediction.score.3"   "prediction.score.37"  "prediction.score.13"  "prediction.score.36"  "prediction.score.33"  "prediction.score.27" 
[25] "prediction.score.12"  "prediction.score.38"  "prediction.score.7"   "prediction.score.2"   "prediction.score.11"  "prediction.score.20"  "prediction.score.16"  "prediction.score.max"
[33] "Area"                 "AR"                   "percent.ribo"         "RNA_snn_res.0.5"      "RNA_snn_res.0.4"      "celltype"             "Emb_Stage"           
all_features = colnames(metadata)
old_morpho_features = c("Area","AR")
metadata_old_removed = metadata[!(all_features %in% old_morpho_features)]
#index_name = "row_names"
#metadata_old_removed[, index_name] <- rownames(metadata_old_removed)

metadata_old_removed
NA

Now we can move on to loading the new features and adding them to the metadata:

my_data_72h = read.csv("Morphodata_All_Features_Sequenced_072h.csv")
dim(my_data_72h)
[1]  48 537
my_data_72h

Adding the identifier so we can merge the dataframes:

# if this is how we add the barcode identifyer it is CRITICAL that the order is the same as in the spreadsheet
# This means A1-A12 INSTEAD of A10,A11,A12,A1,A2 (which is the default order in python and pandas)
barcoder_identifier = "bar"
my_data_72h[barcoder_identifier] <- paste("Bar", c(1:48), sep="")
my_data_72h

Add info to metadata

Here I am basically excluding the columns we don’t want to add, assuming that we want to add all columns that are in the .csv file. Alternatively we could specify which columns (or which features) we want to add to the seurat object manually. No matter which way it is done we would have to add the sample barcode to be able to merge the data with the existing metadata.

all_columns = colnames(my_data_72h)
columns_we_dont_need = c('Sample','Multi_BC','Multi_BC_.','Morphotype',barcoder_identifier)
columns_we_need = all_columns[!(all_columns %in% columns_we_dont_need)]


for (feature_name in columns_we_need) {
  metadata_old_removed[feature_name]<- my_data_72h[[feature_name]][match(metadata_old_removed$Sample.barcode, my_data_72h[[barcoder_identifier]])]
} 
metadata_old_removed

actually adding the metadata to the Seurat object. One thing to do beforehand is removing the old morpho data from the seurat object


for (x in old_morpho_features) {
  Gastruloid_72h_merged_afterQC@meta.data[[x]]=NULL
} 

head(Gastruloid_72h_merged_afterQC@meta.data)

Now we can add the new metadata

for (feature_name in columns_we_need){
  Gastruloid_72h_merged_afterQC <- AddMetaData(object = Gastruloid_72h_merged_afterQC, metadata = metadata_old_removed[[feature_name]], col.name = feature_name)
}

# Now we can look at the final dataframe:
Gastruloid_72h_merged_afterQC@meta.data

checking the column_names

colnames(Gastruloid_72h_merged_afterQC@meta.data)
  [1] "orig.ident"                                              "nCount_RNA"                                              "nFeature_RNA"                                           
  [4] "Sample.barcode"                                          "Morphotype"                                              "percent.mt"                                             
  [7] "RNA_snn_res.0.3"                                         "seurat_clusters"                                         "S.Score"                                                
 [10] "G2M.Score"                                               "Phase"                                                   "old.ident"                                              
 [13] "nCount_SCT"                                              "nFeature_SCT"                                            "predicted.id"                                           
 [16] "prediction.score.17"                                     "prediction.score.8"                                      "prediction.score.19"                                    
 [19] "prediction.score.3"                                      "prediction.score.37"                                     "prediction.score.13"                                    
 [22] "prediction.score.36"                                     "prediction.score.33"                                     "prediction.score.27"                                    
 [25] "prediction.score.12"                                     "prediction.score.38"                                     "prediction.score.7"                                     
 [28] "prediction.score.2"                                      "prediction.score.11"                                     "prediction.score.20"                                    
 [31] "prediction.score.16"                                     "prediction.score.max"                                    "percent.ribo"                                           
 [34] "RNA_snn_res.0.5"                                         "RNA_snn_res.0.4"                                         "celltype"                                               
 [37] "Emb_Stage"                                               "Plate"                                                   "X048h_raw_BF_AreaShape_area"                            
 [40] "X048h_raw_BF_AreaShape_aspect_ratio"                     "X048h_raw_BF_AreaShape_axis_major_length"                "X048h_raw_BF_AreaShape_axis_minor_length"               
 [43] "X048h_raw_BF_AreaShape_eccentricity"                     "X048h_raw_BF_AreaShape_feret_diameter_max"               "X048h_raw_BF_AreaShape_perimeter"                       
 [46] "X048h_raw_BF_AreaShape_solidity"                         "X048h_str_BF_AreaShape_area"                             "X048h_str_BF_AreaShape_aspect_ratio"                    
 [49] "X048h_str_BF_AreaShape_eccentricity"                     "X048h_str_BF_AreaShape_equivalent_diameter"              "X048h_str_BF_AreaShape_extent"                          
 [52] "X048h_str_BF_AreaShape_form_factor"                      "X048h_str_BF_AreaShape_inertia_tensor_0_0"               "X048h_str_BF_AreaShape_inertia_tensor_0_1"              
 [55] "X048h_str_BF_AreaShape_inertia_tensor_1_0"               "X048h_str_BF_AreaShape_inertia_tensor_1_1"               "X048h_str_BF_AreaShape_inertia_tensor_eigvals_0"        
 [58] "X048h_str_BF_AreaShape_inertia_tensor_eigvals_1"         "X048h_str_BF_AreaShape_locoefa_PC_1"                     "X048h_str_BF_AreaShape_locoefa_PC_2"                    
 [61] "X048h_str_BF_AreaShape_locoefa_PC_3"                     "X048h_str_BF_AreaShape_locoefa_PC_4"                     "X048h_str_BF_AreaShape_locoefa_PC_5"                    
 [64] "X048h_str_BF_AreaShape_locoefa_UMAP_1"                   "X048h_str_BF_AreaShape_locoefa_UMAP_2"                   "X048h_str_BF_AreaShape_locoefa_UMAP_3"                  
 [67] "X048h_str_BF_AreaShape_locoefa_coeff_0"                  "X048h_str_BF_AreaShape_locoefa_coeff_1"                  "X048h_str_BF_AreaShape_locoefa_coeff_10"                
 [70] "X048h_str_BF_AreaShape_locoefa_coeff_11"                 "X048h_str_BF_AreaShape_locoefa_coeff_12"                 "X048h_str_BF_AreaShape_locoefa_coeff_13"                
 [73] "X048h_str_BF_AreaShape_locoefa_coeff_14"                 "X048h_str_BF_AreaShape_locoefa_coeff_15"                 "X048h_str_BF_AreaShape_locoefa_coeff_16"                
 [76] "X048h_str_BF_AreaShape_locoefa_coeff_17"                 "X048h_str_BF_AreaShape_locoefa_coeff_18"                 "X048h_str_BF_AreaShape_locoefa_coeff_19"                
 [79] "X048h_str_BF_AreaShape_locoefa_coeff_2"                  "X048h_str_BF_AreaShape_locoefa_coeff_20"                 "X048h_str_BF_AreaShape_locoefa_coeff_21"                
 [82] "X048h_str_BF_AreaShape_locoefa_coeff_22"                 "X048h_str_BF_AreaShape_locoefa_coeff_23"                 "X048h_str_BF_AreaShape_locoefa_coeff_24"                
 [85] "X048h_str_BF_AreaShape_locoefa_coeff_25"                 "X048h_str_BF_AreaShape_locoefa_coeff_26"                 "X048h_str_BF_AreaShape_locoefa_coeff_27"                
 [88] "X048h_str_BF_AreaShape_locoefa_coeff_28"                 "X048h_str_BF_AreaShape_locoefa_coeff_29"                 "X048h_str_BF_AreaShape_locoefa_coeff_3"                 
 [91] "X048h_str_BF_AreaShape_locoefa_coeff_30"                 "X048h_str_BF_AreaShape_locoefa_coeff_31"                 "X048h_str_BF_AreaShape_locoefa_coeff_32"                
 [94] "X048h_str_BF_AreaShape_locoefa_coeff_33"                 "X048h_str_BF_AreaShape_locoefa_coeff_34"                 "X048h_str_BF_AreaShape_locoefa_coeff_35"                
 [97] "X048h_str_BF_AreaShape_locoefa_coeff_36"                 "X048h_str_BF_AreaShape_locoefa_coeff_37"                 "X048h_str_BF_AreaShape_locoefa_coeff_38"                
[100] "X048h_str_BF_AreaShape_locoefa_coeff_39"                 "X048h_str_BF_AreaShape_locoefa_coeff_4"                  "X048h_str_BF_AreaShape_locoefa_coeff_40"                
[103] "X048h_str_BF_AreaShape_locoefa_coeff_41"                 "X048h_str_BF_AreaShape_locoefa_coeff_42"                 "X048h_str_BF_AreaShape_locoefa_coeff_43"                
[106] "X048h_str_BF_AreaShape_locoefa_coeff_44"                 "X048h_str_BF_AreaShape_locoefa_coeff_45"                 "X048h_str_BF_AreaShape_locoefa_coeff_46"                
[109] "X048h_str_BF_AreaShape_locoefa_coeff_47"                 "X048h_str_BF_AreaShape_locoefa_coeff_48"                 "X048h_str_BF_AreaShape_locoefa_coeff_49"                
[112] "X048h_str_BF_AreaShape_locoefa_coeff_5"                  "X048h_str_BF_AreaShape_locoefa_coeff_50"                 "X048h_str_BF_AreaShape_locoefa_coeff_51"                
[115] "X048h_str_BF_AreaShape_locoefa_coeff_6"                  "X048h_str_BF_AreaShape_locoefa_coeff_7"                  "X048h_str_BF_AreaShape_locoefa_coeff_8"                 
[118] "X048h_str_BF_AreaShape_locoefa_coeff_9"                  "X048h_str_BF_AreaShape_major_axis_length"                "X048h_str_BF_AreaShape_minor_axis_length"               
[121] "X048h_str_BF_AreaShape_moments_hu_0"                     "X048h_str_BF_AreaShape_moments_hu_1"                     "X048h_str_BF_AreaShape_moments_hu_2"                    
[124] "X048h_str_BF_AreaShape_moments_hu_3"                     "X048h_str_BF_AreaShape_moments_hu_4"                     "X048h_str_BF_AreaShape_moments_hu_5"                    
[127] "X048h_str_BF_AreaShape_moments_hu_6"                     "X048h_str_BF_AreaShape_orientation"                      "X048h_str_BF_AreaShape_perimeter"                       
[130] "X072h_raw_BF_AreaShape_area"                             "X072h_raw_BF_AreaShape_aspect_ratio"                     "X072h_raw_BF_AreaShape_axis_major_length"               
[133] "X072h_raw_BF_AreaShape_axis_minor_length"                "X072h_raw_BF_AreaShape_eccentricity"                     "X072h_raw_BF_AreaShape_feret_diameter_max"              
[136] "X072h_raw_BF_AreaShape_perimeter"                        "X072h_raw_BF_AreaShape_solidity"                         "X072h_raw_CH__bf_mask_Intensity_IntegratedIntensity"    
[139] "X072h_raw_CH__bf_mask_Intensity_IntegratedIntensityEdge" "X072h_raw_CH__bf_mask_Intensity_LowerQuartileIntensity"  "X072h_raw_CH__bf_mask_Intensity_MADIntensity"           
[142] "X072h_raw_CH__bf_mask_Intensity_MassDisplacement"        "X072h_raw_CH__bf_mask_Intensity_MaxIntensity"            "X072h_raw_CH__bf_mask_Intensity_MaxIntensityEdge"       
[145] "X072h_raw_CH__bf_mask_Intensity_MeanIntensity"           "X072h_raw_CH__bf_mask_Intensity_MeanIntensityEdge"       "X072h_raw_CH__bf_mask_Intensity_MedianIntensity"        
[148] "X072h_raw_CH__bf_mask_Intensity_MinIntensity"            "X072h_raw_CH__bf_mask_Intensity_MinIntensityEdge"        "X072h_raw_CH__bf_mask_Intensity_StdIntensity"           
[151] "X072h_raw_CH__bf_mask_Intensity_StdIntensityEdge"        "X072h_raw_CH__bf_mask_Intensity_UpperQuartileIntensity"  "X072h_raw_CH__bf_mask_Location_CenterMassIntensity_X"   
[154] "X072h_raw_CH__bf_mask_Location_CenterMassIntensity_Y"    "X072h_raw_CH__bf_mask_Location_CenterMassIntensity_Z"    "X072h_raw_CH__bf_mask_Location_Center_X"                
[157] "X072h_raw_CH__bf_mask_Location_Center_Y"                 "X072h_raw_CH__bf_mask_Location_Center_Z"                 "X072h_raw_CH__bf_mask_Location_MaxIntensity_X"          
[160] "X072h_raw_CH__bf_mask_Location_MaxIntensity_Y"           "X072h_raw_CH__bf_mask_Location_MaxIntensity_Z"           "X072h_raw_CH__bf_mask_RadialDistribution_FracAtD_1of9"  
[163] "X072h_raw_CH__bf_mask_RadialDistribution_FracAtD_2of9"   "X072h_raw_CH__bf_mask_RadialDistribution_FracAtD_3of9"   "X072h_raw_CH__bf_mask_RadialDistribution_FracAtD_4of9"  
[166] "X072h_raw_CH__bf_mask_RadialDistribution_FracAtD_5of9"   "X072h_raw_CH__bf_mask_RadialDistribution_FracAtD_6of9"   "X072h_raw_CH__bf_mask_RadialDistribution_FracAtD_7of9"  
[169] "X072h_raw_CH__bf_mask_RadialDistribution_FracAtD_8of9"   "X072h_raw_CH__bf_mask_RadialDistribution_FracAtD_9of9"   "X072h_raw_CH__bf_mask_RadialDistribution_MeanFrac_1of9" 
[172] "X072h_raw_CH__bf_mask_RadialDistribution_MeanFrac_2of9"  "X072h_raw_CH__bf_mask_RadialDistribution_MeanFrac_3of9"  "X072h_raw_CH__bf_mask_RadialDistribution_MeanFrac_4of9" 
[175] "X072h_raw_CH__bf_mask_RadialDistribution_MeanFrac_5of9"  "X072h_raw_CH__bf_mask_RadialDistribution_MeanFrac_6of9"  "X072h_raw_CH__bf_mask_RadialDistribution_MeanFrac_7of9" 
[178] "X072h_raw_CH__bf_mask_RadialDistribution_MeanFrac_8of9"  "X072h_raw_CH__bf_mask_RadialDistribution_MeanFrac_9of9"  "X072h_raw_CH__bf_mask_RadialDistribution_RadialCV_1of9" 
[181] "X072h_raw_CH__bf_mask_RadialDistribution_RadialCV_2of9"  "X072h_raw_CH__bf_mask_RadialDistribution_RadialCV_3of9"  "X072h_raw_CH__bf_mask_RadialDistribution_RadialCV_4of9" 
[184] "X072h_raw_CH__bf_mask_RadialDistribution_RadialCV_5of9"  "X072h_raw_CH__bf_mask_RadialDistribution_RadialCV_6of9"  "X072h_raw_CH__bf_mask_RadialDistribution_RadialCV_7of9" 
[187] "X072h_raw_CH__bf_mask_RadialDistribution_RadialCV_8of9"  "X072h_raw_CH__bf_mask_RadialDistribution_RadialCV_9of9"  "X072h_raw_CH_bra_mask_AreaShape_Area"                   
[190] "X072h_raw_CH_bra_mask_AreaShape_BoundingBoxArea"         "X072h_raw_CH_bra_mask_AreaShape_BoundingBoxMaximum_X"    "X072h_raw_CH_bra_mask_AreaShape_BoundingBoxMaximum_Y"   
[193] "X072h_raw_CH_bra_mask_AreaShape_BoundingBoxMinimum_X"    "X072h_raw_CH_bra_mask_AreaShape_BoundingBoxMinimum_Y"    "X072h_raw_CH_bra_mask_AreaShape_Center_X"               
[196] "X072h_raw_CH_bra_mask_AreaShape_Center_Y"                "X072h_raw_CH_bra_mask_AreaShape_Compactness"             "X072h_raw_CH_bra_mask_AreaShape_ConvexArea"             
[199] "X072h_raw_CH_bra_mask_AreaShape_Eccentricity"            "X072h_raw_CH_bra_mask_AreaShape_EquivalentDiameter"      "X072h_raw_CH_bra_mask_AreaShape_EulerNumber"            
[202] "X072h_raw_CH_bra_mask_AreaShape_Extent"                  "X072h_raw_CH_bra_mask_AreaShape_FormFactor"              "X072h_raw_CH_bra_mask_AreaShape_MajorAxisLength"        
[205] "X072h_raw_CH_bra_mask_AreaShape_MaxFeretDiameter"        "X072h_raw_CH_bra_mask_AreaShape_MaximumRadius"           "X072h_raw_CH_bra_mask_AreaShape_MeanRadius"             
[208] "X072h_raw_CH_bra_mask_AreaShape_MedianRadius"            "X072h_raw_CH_bra_mask_AreaShape_MinFeretDiameter"        "X072h_raw_CH_bra_mask_AreaShape_MinorAxisLength"        
[211] "X072h_raw_CH_bra_mask_AreaShape_Orientation"             "X072h_raw_CH_bra_mask_AreaShape_Perimeter"               "X072h_raw_CH_bra_mask_AreaShape_Solidity"               
[214] "X072h_raw_CH_bra_mask_Intensity_IntegratedIntensity"     "X072h_raw_CH_bra_mask_Intensity_IntegratedIntensityEdge" "X072h_raw_CH_bra_mask_Intensity_LowerQuartileIntensity" 
[217] "X072h_raw_CH_bra_mask_Intensity_MADIntensity"            "X072h_raw_CH_bra_mask_Intensity_MassDisplacement"        "X072h_raw_CH_bra_mask_Intensity_MaxIntensity"           
[220] "X072h_raw_CH_bra_mask_Intensity_MaxIntensityEdge"        "X072h_raw_CH_bra_mask_Intensity_MeanIntensity"           "X072h_raw_CH_bra_mask_Intensity_MeanIntensityEdge"      
[223] "X072h_raw_CH_bra_mask_Intensity_MedianIntensity"         "X072h_raw_CH_bra_mask_Intensity_MinIntensity"            "X072h_raw_CH_bra_mask_Intensity_MinIntensityEdge"       
[226] "X072h_raw_CH_bra_mask_Intensity_StdIntensity"            "X072h_raw_CH_bra_mask_Intensity_StdIntensityEdge"        "X072h_raw_CH_bra_mask_Intensity_UpperQuartileIntensity" 
[229] "X072h_raw_CH_bra_mask_Location_CenterMassIntensity_X"    "X072h_raw_CH_bra_mask_Location_CenterMassIntensity_Y"    "X072h_raw_CH_bra_mask_Location_CenterMassIntensity_Z"   
[232] "X072h_raw_CH_bra_mask_Location_Center_X"                 "X072h_raw_CH_bra_mask_Location_Center_Y"                 "X072h_raw_CH_bra_mask_Location_Center_Z"                
[235] "X072h_raw_CH_bra_mask_Location_MaxIntensity_X"           "X072h_raw_CH_bra_mask_Location_MaxIntensity_Y"           "X072h_raw_CH_bra_mask_Location_MaxIntensity_Z"          
[238] "X072h_raw_CH_bra_mask_RadialDistribution_FracAtD_1of9"   "X072h_raw_CH_bra_mask_RadialDistribution_FracAtD_2of9"   "X072h_raw_CH_bra_mask_RadialDistribution_FracAtD_3of9"  
[241] "X072h_raw_CH_bra_mask_RadialDistribution_FracAtD_4of9"   "X072h_raw_CH_bra_mask_RadialDistribution_FracAtD_5of9"   "X072h_raw_CH_bra_mask_RadialDistribution_FracAtD_6of9"  
[244] "X072h_raw_CH_bra_mask_RadialDistribution_FracAtD_7of9"   "X072h_raw_CH_bra_mask_RadialDistribution_FracAtD_8of9"   "X072h_raw_CH_bra_mask_RadialDistribution_FracAtD_9of9"  
[247] "X072h_raw_CH_bra_mask_RadialDistribution_MeanFrac_1of9"  "X072h_raw_CH_bra_mask_RadialDistribution_MeanFrac_2of9"  "X072h_raw_CH_bra_mask_RadialDistribution_MeanFrac_3of9" 
[250] "X072h_raw_CH_bra_mask_RadialDistribution_MeanFrac_4of9"  "X072h_raw_CH_bra_mask_RadialDistribution_MeanFrac_5of9"  "X072h_raw_CH_bra_mask_RadialDistribution_MeanFrac_6of9" 
[253] "X072h_raw_CH_bra_mask_RadialDistribution_MeanFrac_7of9"  "X072h_raw_CH_bra_mask_RadialDistribution_MeanFrac_8of9"  "X072h_raw_CH_bra_mask_RadialDistribution_MeanFrac_9of9" 
[256] "X072h_raw_CH_bra_mask_RadialDistribution_RadialCV_1of9"  "X072h_raw_CH_bra_mask_RadialDistribution_RadialCV_2of9"  "X072h_raw_CH_bra_mask_RadialDistribution_RadialCV_3of9" 
[259] "X072h_raw_CH_bra_mask_RadialDistribution_RadialCV_4of9"  "X072h_raw_CH_bra_mask_RadialDistribution_RadialCV_5of9"  "X072h_raw_CH_bra_mask_RadialDistribution_RadialCV_6of9" 
[262] "X072h_raw_CH_bra_mask_RadialDistribution_RadialCV_7of9"  "X072h_raw_CH_bra_mask_RadialDistribution_RadialCV_8of9"  "X072h_raw_CH_bra_mask_RadialDistribution_RadialCV_9of9" 
[265] "X072h_str_BF_AreaShape_area"                             "X072h_str_BF_AreaShape_aspect_ratio"                     "X072h_str_BF_AreaShape_eccentricity"                    
[268] "X072h_str_BF_AreaShape_equivalent_diameter"              "X072h_str_BF_AreaShape_extent"                           "X072h_str_BF_AreaShape_form_factor"                     
[271] "X072h_str_BF_AreaShape_inertia_tensor_0_0"               "X072h_str_BF_AreaShape_inertia_tensor_0_1"               "X072h_str_BF_AreaShape_inertia_tensor_1_0"              
[274] "X072h_str_BF_AreaShape_inertia_tensor_1_1"               "X072h_str_BF_AreaShape_inertia_tensor_eigvals_0"         "X072h_str_BF_AreaShape_inertia_tensor_eigvals_1"        
[277] "X072h_str_BF_AreaShape_locoefa_PC_1"                     "X072h_str_BF_AreaShape_locoefa_PC_2"                     "X072h_str_BF_AreaShape_locoefa_PC_3"                    
[280] "X072h_str_BF_AreaShape_locoefa_PC_4"                     "X072h_str_BF_AreaShape_locoefa_PC_5"                     "X072h_str_BF_AreaShape_locoefa_UMAP_1"                  
[283] "X072h_str_BF_AreaShape_locoefa_UMAP_2"                   "X072h_str_BF_AreaShape_locoefa_UMAP_3"                   "X072h_str_BF_AreaShape_locoefa_coeff_0"                 
[286] "X072h_str_BF_AreaShape_locoefa_coeff_1"                  "X072h_str_BF_AreaShape_locoefa_coeff_10"                 "X072h_str_BF_AreaShape_locoefa_coeff_11"                
[289] "X072h_str_BF_AreaShape_locoefa_coeff_12"                 "X072h_str_BF_AreaShape_locoefa_coeff_13"                 "X072h_str_BF_AreaShape_locoefa_coeff_14"                
[292] "X072h_str_BF_AreaShape_locoefa_coeff_15"                 "X072h_str_BF_AreaShape_locoefa_coeff_16"                 "X072h_str_BF_AreaShape_locoefa_coeff_17"                
[295] "X072h_str_BF_AreaShape_locoefa_coeff_18"                 "X072h_str_BF_AreaShape_locoefa_coeff_19"                 "X072h_str_BF_AreaShape_locoefa_coeff_2"                 
[298] "X072h_str_BF_AreaShape_locoefa_coeff_20"                 "X072h_str_BF_AreaShape_locoefa_coeff_21"                 "X072h_str_BF_AreaShape_locoefa_coeff_22"                
[301] "X072h_str_BF_AreaShape_locoefa_coeff_23"                 "X072h_str_BF_AreaShape_locoefa_coeff_24"                 "X072h_str_BF_AreaShape_locoefa_coeff_25"                
[304] "X072h_str_BF_AreaShape_locoefa_coeff_26"                 "X072h_str_BF_AreaShape_locoefa_coeff_27"                 "X072h_str_BF_AreaShape_locoefa_coeff_28"                
[307] "X072h_str_BF_AreaShape_locoefa_coeff_29"                 "X072h_str_BF_AreaShape_locoefa_coeff_3"                  "X072h_str_BF_AreaShape_locoefa_coeff_30"                
[310] "X072h_str_BF_AreaShape_locoefa_coeff_31"                 "X072h_str_BF_AreaShape_locoefa_coeff_32"                 "X072h_str_BF_AreaShape_locoefa_coeff_33"                
[313] "X072h_str_BF_AreaShape_locoefa_coeff_34"                 "X072h_str_BF_AreaShape_locoefa_coeff_35"                 "X072h_str_BF_AreaShape_locoefa_coeff_36"                
[316] "X072h_str_BF_AreaShape_locoefa_coeff_37"                 "X072h_str_BF_AreaShape_locoefa_coeff_38"                 "X072h_str_BF_AreaShape_locoefa_coeff_39"                
[319] "X072h_str_BF_AreaShape_locoefa_coeff_4"                  "X072h_str_BF_AreaShape_locoefa_coeff_40"                 "X072h_str_BF_AreaShape_locoefa_coeff_41"                
[322] "X072h_str_BF_AreaShape_locoefa_coeff_42"                 "X072h_str_BF_AreaShape_locoefa_coeff_43"                 "X072h_str_BF_AreaShape_locoefa_coeff_44"                
[325] "X072h_str_BF_AreaShape_locoefa_coeff_45"                 "X072h_str_BF_AreaShape_locoefa_coeff_46"                 "X072h_str_BF_AreaShape_locoefa_coeff_47"                
[328] "X072h_str_BF_AreaShape_locoefa_coeff_48"                 "X072h_str_BF_AreaShape_locoefa_coeff_49"                 "X072h_str_BF_AreaShape_locoefa_coeff_5"                 
[331] "X072h_str_BF_AreaShape_locoefa_coeff_50"                 "X072h_str_BF_AreaShape_locoefa_coeff_51"                 "X072h_str_BF_AreaShape_locoefa_coeff_6"                 
[334] "X072h_str_BF_AreaShape_locoefa_coeff_7"                  "X072h_str_BF_AreaShape_locoefa_coeff_8"                  "X072h_str_BF_AreaShape_locoefa_coeff_9"                 
[337] "X072h_str_BF_AreaShape_major_axis_length"                "X072h_str_BF_AreaShape_minor_axis_length"                "X072h_str_BF_AreaShape_moments_hu_0"                    
[340] "X072h_str_BF_AreaShape_moments_hu_1"                     "X072h_str_BF_AreaShape_moments_hu_2"                     "X072h_str_BF_AreaShape_moments_hu_3"                    
[343] "X072h_str_BF_AreaShape_moments_hu_4"                     "X072h_str_BF_AreaShape_moments_hu_5"                     "X072h_str_BF_AreaShape_moments_hu_6"                    
[346] "X072h_str_BF_AreaShape_orientation"                      "X072h_str_BF_AreaShape_perimeter"                        "X072h_str_CH_AreaShape_Bra_MajorAxis_Polarisation"      
[349] "X072h_str_CH_AreaShape_Bra_MinorAxis_Polarisation"       "X096h_raw_BF_AreaShape_area"                             "X096h_raw_BF_AreaShape_aspect_ratio"                    
[352] "X096h_raw_BF_AreaShape_axis_major_length"                "X096h_raw_BF_AreaShape_axis_minor_length"                "X096h_raw_BF_AreaShape_eccentricity"                    
[355] "X096h_raw_BF_AreaShape_feret_diameter_max"               "X096h_raw_BF_AreaShape_perimeter"                        "X096h_raw_BF_AreaShape_solidity"                        
[358] "X096h_raw_CH_AreaShape_Bra_AreaFraction"                 "X096h_raw_CH__bf_mask_Intensity_IntegratedIntensity"     "X096h_raw_CH__bf_mask_Intensity_IntegratedIntensityEdge"
[361] "X096h_raw_CH__bf_mask_Intensity_LowerQuartileIntensity"  "X096h_raw_CH__bf_mask_Intensity_MADIntensity"            "X096h_raw_CH__bf_mask_Intensity_MassDisplacement"       
[364] "X096h_raw_CH__bf_mask_Intensity_MaxIntensity"            "X096h_raw_CH__bf_mask_Intensity_MaxIntensityEdge"        "X096h_raw_CH__bf_mask_Intensity_MeanIntensity"          
[367] "X096h_raw_CH__bf_mask_Intensity_MeanIntensityEdge"       "X096h_raw_CH__bf_mask_Intensity_MedianIntensity"         "X096h_raw_CH__bf_mask_Intensity_MinIntensity"           
[370] "X096h_raw_CH__bf_mask_Intensity_MinIntensityEdge"        "X096h_raw_CH__bf_mask_Intensity_StdIntensity"            "X096h_raw_CH__bf_mask_Intensity_StdIntensityEdge"       
[373] "X096h_raw_CH__bf_mask_Intensity_UpperQuartileIntensity"  "X096h_raw_CH__bf_mask_Location_CenterMassIntensity_X"    "X096h_raw_CH__bf_mask_Location_CenterMassIntensity_Y"   
[376] "X096h_raw_CH__bf_mask_Location_CenterMassIntensity_Z"    "X096h_raw_CH__bf_mask_Location_Center_X"                 "X096h_raw_CH__bf_mask_Location_Center_Y"                
[379] "X096h_raw_CH__bf_mask_Location_Center_Z"                 "X096h_raw_CH__bf_mask_Location_MaxIntensity_X"           "X096h_raw_CH__bf_mask_Location_MaxIntensity_Y"          
[382] "X096h_raw_CH__bf_mask_Location_MaxIntensity_Z"           "X096h_raw_CH__bf_mask_RadialDistribution_FracAtD_1of9"   "X096h_raw_CH__bf_mask_RadialDistribution_FracAtD_2of9"  
[385] "X096h_raw_CH__bf_mask_RadialDistribution_FracAtD_3of9"   "X096h_raw_CH__bf_mask_RadialDistribution_FracAtD_4of9"   "X096h_raw_CH__bf_mask_RadialDistribution_FracAtD_5of9"  
[388] "X096h_raw_CH__bf_mask_RadialDistribution_FracAtD_6of9"   "X096h_raw_CH__bf_mask_RadialDistribution_FracAtD_7of9"   "X096h_raw_CH__bf_mask_RadialDistribution_FracAtD_8of9"  
[391] "X096h_raw_CH__bf_mask_RadialDistribution_FracAtD_9of9"   "X096h_raw_CH__bf_mask_RadialDistribution_MeanFrac_1of9"  "X096h_raw_CH__bf_mask_RadialDistribution_MeanFrac_2of9" 
[394] "X096h_raw_CH__bf_mask_RadialDistribution_MeanFrac_3of9"  "X096h_raw_CH__bf_mask_RadialDistribution_MeanFrac_4of9"  "X096h_raw_CH__bf_mask_RadialDistribution_MeanFrac_5of9" 
[397] "X096h_raw_CH__bf_mask_RadialDistribution_MeanFrac_6of9"  "X096h_raw_CH__bf_mask_RadialDistribution_MeanFrac_7of9"  "X096h_raw_CH__bf_mask_RadialDistribution_MeanFrac_8of9" 
[400] "X096h_raw_CH__bf_mask_RadialDistribution_MeanFrac_9of9"  "X096h_raw_CH__bf_mask_RadialDistribution_RadialCV_1of9"  "X096h_raw_CH__bf_mask_RadialDistribution_RadialCV_2of9" 
[403] "X096h_raw_CH__bf_mask_RadialDistribution_RadialCV_3of9"  "X096h_raw_CH__bf_mask_RadialDistribution_RadialCV_4of9"  "X096h_raw_CH__bf_mask_RadialDistribution_RadialCV_5of9" 
[406] "X096h_raw_CH__bf_mask_RadialDistribution_RadialCV_6of9"  "X096h_raw_CH__bf_mask_RadialDistribution_RadialCV_7of9"  "X096h_raw_CH__bf_mask_RadialDistribution_RadialCV_8of9" 
[409] "X096h_raw_CH__bf_mask_RadialDistribution_RadialCV_9of9"  "X096h_raw_CH_bra_mask_AreaShape_Area"                    "X096h_raw_CH_bra_mask_AreaShape_BoundingBoxArea"        
[412] "X096h_raw_CH_bra_mask_AreaShape_BoundingBoxMaximum_X"    "X096h_raw_CH_bra_mask_AreaShape_BoundingBoxMaximum_Y"    "X096h_raw_CH_bra_mask_AreaShape_BoundingBoxMinimum_X"   
[415] "X096h_raw_CH_bra_mask_AreaShape_BoundingBoxMinimum_Y"    "X096h_raw_CH_bra_mask_AreaShape_Center_X"                "X096h_raw_CH_bra_mask_AreaShape_Center_Y"               
[418] "X096h_raw_CH_bra_mask_AreaShape_Compactness"             "X096h_raw_CH_bra_mask_AreaShape_ConvexArea"              "X096h_raw_CH_bra_mask_AreaShape_Eccentricity"           
[421] "X096h_raw_CH_bra_mask_AreaShape_EquivalentDiameter"      "X096h_raw_CH_bra_mask_AreaShape_EulerNumber"             "X096h_raw_CH_bra_mask_AreaShape_Extent"                 
[424] "X096h_raw_CH_bra_mask_AreaShape_FormFactor"              "X096h_raw_CH_bra_mask_AreaShape_MajorAxisLength"         "X096h_raw_CH_bra_mask_AreaShape_MaxFeretDiameter"       
[427] "X096h_raw_CH_bra_mask_AreaShape_MaximumRadius"           "X096h_raw_CH_bra_mask_AreaShape_MeanRadius"              "X096h_raw_CH_bra_mask_AreaShape_MedianRadius"           
[430] "X096h_raw_CH_bra_mask_AreaShape_MinFeretDiameter"        "X096h_raw_CH_bra_mask_AreaShape_MinorAxisLength"         "X096h_raw_CH_bra_mask_AreaShape_Orientation"            
[433] "X096h_raw_CH_bra_mask_AreaShape_Perimeter"               "X096h_raw_CH_bra_mask_AreaShape_Solidity"                "X096h_raw_CH_bra_mask_Intensity_IntegratedIntensity"    
[436] "X096h_raw_CH_bra_mask_Intensity_IntegratedIntensityEdge" "X096h_raw_CH_bra_mask_Intensity_LowerQuartileIntensity"  "X096h_raw_CH_bra_mask_Intensity_MADIntensity"           
[439] "X096h_raw_CH_bra_mask_Intensity_MassDisplacement"        "X096h_raw_CH_bra_mask_Intensity_MaxIntensity"            "X096h_raw_CH_bra_mask_Intensity_MaxIntensityEdge"       
[442] "X096h_raw_CH_bra_mask_Intensity_MeanIntensity"           "X096h_raw_CH_bra_mask_Intensity_MeanIntensityEdge"       "X096h_raw_CH_bra_mask_Intensity_MedianIntensity"        
[445] "X096h_raw_CH_bra_mask_Intensity_MinIntensity"            "X096h_raw_CH_bra_mask_Intensity_MinIntensityEdge"        "X096h_raw_CH_bra_mask_Intensity_StdIntensity"           
[448] "X096h_raw_CH_bra_mask_Intensity_StdIntensityEdge"        "X096h_raw_CH_bra_mask_Intensity_UpperQuartileIntensity"  "X096h_raw_CH_bra_mask_Location_CenterMassIntensity_X"   
[451] "X096h_raw_CH_bra_mask_Location_CenterMassIntensity_Y"    "X096h_raw_CH_bra_mask_Location_CenterMassIntensity_Z"    "X096h_raw_CH_bra_mask_Location_Center_X"                
[454] "X096h_raw_CH_bra_mask_Location_Center_Y"                 "X096h_raw_CH_bra_mask_Location_Center_Z"                 "X096h_raw_CH_bra_mask_Location_MaxIntensity_X"          
[457] "X096h_raw_CH_bra_mask_Location_MaxIntensity_Y"           "X096h_raw_CH_bra_mask_Location_MaxIntensity_Z"           "X096h_raw_CH_bra_mask_RadialDistribution_FracAtD_1of9"  
[460] "X096h_raw_CH_bra_mask_RadialDistribution_FracAtD_2of9"   "X096h_raw_CH_bra_mask_RadialDistribution_FracAtD_3of9"   "X096h_raw_CH_bra_mask_RadialDistribution_FracAtD_4of9"  
[463] "X096h_raw_CH_bra_mask_RadialDistribution_FracAtD_5of9"   "X096h_raw_CH_bra_mask_RadialDistribution_FracAtD_6of9"   "X096h_raw_CH_bra_mask_RadialDistribution_FracAtD_7of9"  
[466] "X096h_raw_CH_bra_mask_RadialDistribution_FracAtD_8of9"   "X096h_raw_CH_bra_mask_RadialDistribution_FracAtD_9of9"   "X096h_raw_CH_bra_mask_RadialDistribution_MeanFrac_1of9" 
[469] "X096h_raw_CH_bra_mask_RadialDistribution_MeanFrac_2of9"  "X096h_raw_CH_bra_mask_RadialDistribution_MeanFrac_3of9"  "X096h_raw_CH_bra_mask_RadialDistribution_MeanFrac_4of9" 
[472] "X096h_raw_CH_bra_mask_RadialDistribution_MeanFrac_5of9"  "X096h_raw_CH_bra_mask_RadialDistribution_MeanFrac_6of9"  "X096h_raw_CH_bra_mask_RadialDistribution_MeanFrac_7of9" 
[475] "X096h_raw_CH_bra_mask_RadialDistribution_MeanFrac_8of9"  "X096h_raw_CH_bra_mask_RadialDistribution_MeanFrac_9of9"  "X096h_raw_CH_bra_mask_RadialDistribution_RadialCV_1of9" 
[478] "X096h_raw_CH_bra_mask_RadialDistribution_RadialCV_2of9"  "X096h_raw_CH_bra_mask_RadialDistribution_RadialCV_3of9"  "X096h_raw_CH_bra_mask_RadialDistribution_RadialCV_4of9" 
[481] "X096h_raw_CH_bra_mask_RadialDistribution_RadialCV_5of9"  "X096h_raw_CH_bra_mask_RadialDistribution_RadialCV_6of9"  "X096h_raw_CH_bra_mask_RadialDistribution_RadialCV_7of9" 
[484] "X096h_raw_CH_bra_mask_RadialDistribution_RadialCV_8of9"  "X096h_raw_CH_bra_mask_RadialDistribution_RadialCV_9of9"  "X096h_str_BF_AreaShape_area"                            
[487] "X096h_str_BF_AreaShape_aspect_ratio"                     "X096h_str_BF_AreaShape_eccentricity"                     "X096h_str_BF_AreaShape_equivalent_diameter"             
[490] "X096h_str_BF_AreaShape_extent"                           "X096h_str_BF_AreaShape_form_factor"                      "X096h_str_BF_AreaShape_inertia_tensor_0_0"              
[493] "X096h_str_BF_AreaShape_inertia_tensor_0_1"               "X096h_str_BF_AreaShape_inertia_tensor_1_0"               "X096h_str_BF_AreaShape_inertia_tensor_1_1"              
[496] "X096h_str_BF_AreaShape_inertia_tensor_eigvals_0"         "X096h_str_BF_AreaShape_inertia_tensor_eigvals_1"         "X096h_str_BF_AreaShape_locoefa_PC_1"                    
[499] "X096h_str_BF_AreaShape_locoefa_PC_2"                     "X096h_str_BF_AreaShape_locoefa_PC_3"                     "X096h_str_BF_AreaShape_locoefa_PC_4"                    
[502] "X096h_str_BF_AreaShape_locoefa_PC_5"                     "X096h_str_BF_AreaShape_locoefa_UMAP_1"                   "X096h_str_BF_AreaShape_locoefa_UMAP_2"                  
[505] "X096h_str_BF_AreaShape_locoefa_UMAP_3"                   "X096h_str_BF_AreaShape_locoefa_coeff_0"                  "X096h_str_BF_AreaShape_locoefa_coeff_1"                 
[508] "X096h_str_BF_AreaShape_locoefa_coeff_10"                 "X096h_str_BF_AreaShape_locoefa_coeff_11"                 "X096h_str_BF_AreaShape_locoefa_coeff_12"                
[511] "X096h_str_BF_AreaShape_locoefa_coeff_13"                 "X096h_str_BF_AreaShape_locoefa_coeff_14"                 "X096h_str_BF_AreaShape_locoefa_coeff_15"                
[514] "X096h_str_BF_AreaShape_locoefa_coeff_16"                 "X096h_str_BF_AreaShape_locoefa_coeff_17"                 "X096h_str_BF_AreaShape_locoefa_coeff_18"                
[517] "X096h_str_BF_AreaShape_locoefa_coeff_19"                 "X096h_str_BF_AreaShape_locoefa_coeff_2"                  "X096h_str_BF_AreaShape_locoefa_coeff_20"                
[520] "X096h_str_BF_AreaShape_locoefa_coeff_21"                 "X096h_str_BF_AreaShape_locoefa_coeff_22"                 "X096h_str_BF_AreaShape_locoefa_coeff_23"                
[523] "X096h_str_BF_AreaShape_locoefa_coeff_24"                 "X096h_str_BF_AreaShape_locoefa_coeff_25"                 "X096h_str_BF_AreaShape_locoefa_coeff_26"                
[526] "X096h_str_BF_AreaShape_locoefa_coeff_27"                 "X096h_str_BF_AreaShape_locoefa_coeff_28"                 "X096h_str_BF_AreaShape_locoefa_coeff_29"                
[529] "X096h_str_BF_AreaShape_locoefa_coeff_3"                  "X096h_str_BF_AreaShape_locoefa_coeff_30"                 "X096h_str_BF_AreaShape_locoefa_coeff_31"                
[532] "X096h_str_BF_AreaShape_locoefa_coeff_32"                 "X096h_str_BF_AreaShape_locoefa_coeff_33"                 "X096h_str_BF_AreaShape_locoefa_coeff_34"                
[535] "X096h_str_BF_AreaShape_locoefa_coeff_35"                 "X096h_str_BF_AreaShape_locoefa_coeff_36"                 "X096h_str_BF_AreaShape_locoefa_coeff_37"                
[538] "X096h_str_BF_AreaShape_locoefa_coeff_38"                 "X096h_str_BF_AreaShape_locoefa_coeff_39"                 "X096h_str_BF_AreaShape_locoefa_coeff_4"                 
[541] "X096h_str_BF_AreaShape_locoefa_coeff_40"                 "X096h_str_BF_AreaShape_locoefa_coeff_41"                 "X096h_str_BF_AreaShape_locoefa_coeff_42"                
[544] "X096h_str_BF_AreaShape_locoefa_coeff_43"                 "X096h_str_BF_AreaShape_locoefa_coeff_44"                 "X096h_str_BF_AreaShape_locoefa_coeff_45"                
[547] "X096h_str_BF_AreaShape_locoefa_coeff_46"                 "X096h_str_BF_AreaShape_locoefa_coeff_47"                 "X096h_str_BF_AreaShape_locoefa_coeff_48"                
[550] "X096h_str_BF_AreaShape_locoefa_coeff_49"                 "X096h_str_BF_AreaShape_locoefa_coeff_5"                  "X096h_str_BF_AreaShape_locoefa_coeff_50"                
[553] "X096h_str_BF_AreaShape_locoefa_coeff_51"                 "X096h_str_BF_AreaShape_locoefa_coeff_6"                  "X096h_str_BF_AreaShape_locoefa_coeff_7"                 
[556] "X096h_str_BF_AreaShape_locoefa_coeff_8"                  "X096h_str_BF_AreaShape_locoefa_coeff_9"                  "X096h_str_BF_AreaShape_major_axis_length"               
[559] "X096h_str_BF_AreaShape_minor_axis_length"                "X096h_str_BF_AreaShape_moments_hu_0"                     "X096h_str_BF_AreaShape_moments_hu_1"                    
[562] "X096h_str_BF_AreaShape_moments_hu_2"                     "X096h_str_BF_AreaShape_moments_hu_3"                     "X096h_str_BF_AreaShape_moments_hu_4"                    
[565] "X096h_str_BF_AreaShape_moments_hu_5"                     "X096h_str_BF_AreaShape_moments_hu_6"                     "X096h_str_BF_AreaShape_orientation"                     
[568] "X096h_str_BF_AreaShape_perimeter"                        "X096h_str_CH_AreaShape_Bra_MajorAxis_Polarisation"       "X096h_str_CH_AreaShape_Bra_MinorAxis_Polarisation"      

Now we can save this monstrosity to disc:

saveRDS(Gastruloid_72h_merged_afterQC, file = "df72v3_updated_morphodata.rds")
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpMb2FkaW5nIHRoZSBsaWJyYXJ5DQpgYGB7cn0NCmxpYnJhcnkoU2V1cmF0KQ0KYGBgDQoNClNldHRpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5DQpgYGB7cn0NCnNldHdkKCJDOi9Vc2Vycy9zYXZpbGwvT25lRHJpdmUvRG9jdW1lbnRzL1BoRCBKZXNzZS9SLU9iamVjdHMiKQ0KYGBgDQpMb2FkaW5nIHRoZSBkYXRhDQpgYGB7cn0NCiMgbG9hZCBteSBkYXRhDQpHYXN0cnVsb2lkXzcyaF9tZXJnZWRfYWZ0ZXJRQyA8LSByZWFkUkRTKCIuL2RmNzJ2My5yZHMiKQ0KDQpHYXN0cnVsb2lkXzcyaF9tZXJnZWRfYWZ0ZXJRQw0KRGVmYXVsdEFzc2F5KEdhc3RydWxvaWRfNzJoX21lcmdlZF9hZnRlclFDKSA8LSAiU0NUIg0KDQpHYXN0cnVsb2lkXzcyaF9tZXJnZWRfYWZ0ZXJRQyA8LSBTZXRJZGVudChHYXN0cnVsb2lkXzcyaF9tZXJnZWRfYWZ0ZXJRQywgdmFsdWUgPSAicHJlZGljdGVkLmlkIikNCmBgYA0KR2V0dGluZyB0aGUgbWV0YWRhdGEgYW5kIHRha2luZyBhIHBlYWs6DQpgYGB7cn0NCm1ldGFkYXRhIDwtIEdhc3RydWxvaWRfNzJoX21lcmdlZF9hZnRlclFDQG1ldGEuZGF0YQ0KaGVhZChtZXRhZGF0YSkNCmBgYA0KR2V0IGFsbCB0aGUgY29sdW1ucyBzbyB3ZSBjYW4gZGVsZXRlIHRoZSBvbGQgbW9ycGhvbG9neSBpbmZvOg0KYGBge3J9DQpjb2xuYW1lcyhtZXRhZGF0YSkNCmBgYA0KYGBge3J9DQphbGxfZmVhdHVyZXMgPSBjb2xuYW1lcyhtZXRhZGF0YSkNCm9sZF9tb3JwaG9fZmVhdHVyZXMgPSBjKCJBcmVhIiwiQVIiKQ0KbWV0YWRhdGFfb2xkX3JlbW92ZWQgPSBtZXRhZGF0YVshKGFsbF9mZWF0dXJlcyAlaW4lIG9sZF9tb3JwaG9fZmVhdHVyZXMpXQ0KI2luZGV4X25hbWUgPSAicm93X25hbWVzIg0KI21ldGFkYXRhX29sZF9yZW1vdmVkWywgaW5kZXhfbmFtZV0gPC0gcm93bmFtZXMobWV0YWRhdGFfb2xkX3JlbW92ZWQpDQoNCm1ldGFkYXRhX29sZF9yZW1vdmVkDQoNCmBgYA0KTm93IHdlIGNhbiBtb3ZlIG9uIHRvIGxvYWRpbmcgdGhlIG5ldyBmZWF0dXJlcyBhbmQgYWRkaW5nIHRoZW0gdG8gdGhlIG1ldGFkYXRhOg0KYGBge3J9DQpteV9kYXRhXzcyaCA9IHJlYWQuY3N2KCJNb3JwaG9kYXRhX0FsbF9GZWF0dXJlc19TZXF1ZW5jZWRfMDcyaC5jc3YiKQ0KZGltKG15X2RhdGFfNzJoKQ0KbXlfZGF0YV83MmgNCmBgYA0KQWRkaW5nIHRoZSBpZGVudGlmaWVyIHNvIHdlIGNhbiBtZXJnZSB0aGUgZGF0YWZyYW1lczoNCmBgYHtyfQ0KIyBpZiB0aGlzIGlzIGhvdyB3ZSBhZGQgdGhlIGJhcmNvZGUgaWRlbnRpZnllciBpdCBpcyBDUklUSUNBTCB0aGF0IHRoZSBvcmRlciBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgc3ByZWFkc2hlZXQNCiMgVGhpcyBtZWFucyBBMS1BMTIgSU5TVEVBRCBvZiBBMTAsQTExLEExMixBMSxBMiAod2hpY2ggaXMgdGhlIGRlZmF1bHQgb3JkZXIgaW4gcHl0aG9uIGFuZCBwYW5kYXMpDQpiYXJjb2Rlcl9pZGVudGlmaWVyID0gImJhciINCm15X2RhdGFfNzJoW2JhcmNvZGVyX2lkZW50aWZpZXJdIDwtIHBhc3RlKCJCYXIiLCBjKDE6NDgpLCBzZXA9IiIpDQpteV9kYXRhXzcyaA0KYGBgDQojIyBBZGQgaW5mbyB0byBtZXRhZGF0YQ0KSGVyZSBJIGFtIGJhc2ljYWxseSBleGNsdWRpbmcgdGhlIGNvbHVtbnMgd2UgZG9uJ3Qgd2FudCB0byBhZGQsIGFzc3VtaW5nIHRoYXQgd2Ugd2FudCB0byBhZGQgYWxsIGNvbHVtbnMgdGhhdCBhcmUgaW4gdGhlIC5jc3YgZmlsZS4gQWx0ZXJuYXRpdmVseSB3ZSBjb3VsZCBzcGVjaWZ5IHdoaWNoIGNvbHVtbnMgKG9yIHdoaWNoIGZlYXR1cmVzKSB3ZSB3YW50IHRvIGFkZCB0byB0aGUgc2V1cmF0IG9iamVjdCBtYW51YWxseS4gTm8gbWF0dGVyIHdoaWNoIHdheSBpdCBpcyBkb25lIHdlIHdvdWxkIGhhdmUgdG8gYWRkIHRoZSBzYW1wbGUgYmFyY29kZSB0byBiZSBhYmxlIHRvIG1lcmdlIHRoZSBkYXRhIHdpdGggdGhlIGV4aXN0aW5nIG1ldGFkYXRhLg0KYGBge3J9DQphbGxfY29sdW1ucyA9IGNvbG5hbWVzKG15X2RhdGFfNzJoKQ0KY29sdW1uc193ZV9kb250X25lZWQgPSBjKCdTYW1wbGUnLCdNdWx0aV9CQycsJ011bHRpX0JDXy4nLCdNb3JwaG90eXBlJyxiYXJjb2Rlcl9pZGVudGlmaWVyKQ0KY29sdW1uc193ZV9uZWVkID0gYWxsX2NvbHVtbnNbIShhbGxfY29sdW1ucyAlaW4lIGNvbHVtbnNfd2VfZG9udF9uZWVkKV0NCg0KDQpmb3IgKGZlYXR1cmVfbmFtZSBpbiBjb2x1bW5zX3dlX25lZWQpIHsNCiAgbWV0YWRhdGFfb2xkX3JlbW92ZWRbZmVhdHVyZV9uYW1lXTwtIG15X2RhdGFfNzJoW1tmZWF0dXJlX25hbWVdXVttYXRjaChtZXRhZGF0YV9vbGRfcmVtb3ZlZCRTYW1wbGUuYmFyY29kZSwgbXlfZGF0YV83MmhbW2JhcmNvZGVyX2lkZW50aWZpZXJdXSldDQp9IA0KbWV0YWRhdGFfb2xkX3JlbW92ZWQNCmBgYA0KDQphY3R1YWxseSBhZGRpbmcgdGhlIG1ldGFkYXRhIHRvIHRoZSBTZXVyYXQgb2JqZWN0LiBPbmUgdGhpbmcgdG8gZG8gYmVmb3JlaGFuZCBpcyByZW1vdmluZyB0aGUgb2xkIG1vcnBobyBkYXRhIGZyb20gdGhlIHNldXJhdCBvYmplY3QNCmBgYHtyfQ0KDQpmb3IgKHggaW4gb2xkX21vcnBob19mZWF0dXJlcykgew0KICBHYXN0cnVsb2lkXzcyaF9tZXJnZWRfYWZ0ZXJRQ0BtZXRhLmRhdGFbW3hdXT1OVUxMDQp9IA0KDQpoZWFkKEdhc3RydWxvaWRfNzJoX21lcmdlZF9hZnRlclFDQG1ldGEuZGF0YSkNCmBgYA0KTm93IHdlIGNhbiBhZGQgdGhlIG5ldyBtZXRhZGF0YQ0KYGBge3J9DQpmb3IgKGZlYXR1cmVfbmFtZSBpbiBjb2x1bW5zX3dlX25lZWQpew0KICBHYXN0cnVsb2lkXzcyaF9tZXJnZWRfYWZ0ZXJRQyA8LSBBZGRNZXRhRGF0YShvYmplY3QgPSBHYXN0cnVsb2lkXzcyaF9tZXJnZWRfYWZ0ZXJRQywgbWV0YWRhdGEgPSBtZXRhZGF0YV9vbGRfcmVtb3ZlZFtbZmVhdHVyZV9uYW1lXV0sIGNvbC5uYW1lID0gZmVhdHVyZV9uYW1lKQ0KfQ0KDQojIE5vdyB3ZSBjYW4gbG9vayBhdCB0aGUgZmluYWwgZGF0YWZyYW1lOg0KR2FzdHJ1bG9pZF83MmhfbWVyZ2VkX2FmdGVyUUNAbWV0YS5kYXRhDQpgYGANCmNoZWNraW5nIHRoZSBjb2x1bW5fbmFtZXMNCmBgYHtyfQ0KY29sbmFtZXMoR2FzdHJ1bG9pZF83MmhfbWVyZ2VkX2FmdGVyUUNAbWV0YS5kYXRhKQ0KYGBgDQpOb3cgd2UgY2FuIHNhdmUgdGhpcyBtb25zdHJvc2l0eSB0byBkaXNjOg0KYGBge3J9DQpzYXZlUkRTKEdhc3RydWxvaWRfNzJoX21lcmdlZF9hZnRlclFDLCBmaWxlID0gImRmNzJ2M191cGRhdGVkX21vcnBob2RhdGEucmRzIikNCmBgYA==